import { getAreaInfo } from '../api'
// 本地存储的封装
const KEY_CITY = 'HKZF_CITY_INFO'
// 获取本地存储的城市信息
export const getLocalCity = () => {
    return JSON.parse(localStorage.getItem(KEY_CITY)) || {}
}
// 设置本地存储的城市信息
export const setLocalCity = (cityInfo) => {
    localStorage.setItem(KEY_CITY, JSON.stringify(cityInfo))
}
// 更稳妥的写法，把全局变量 BMap 作为当前页面的局部变量，否则有时候会报错
const BMap = window.BMap
// 获取当前定位城市
export const getCurrentCity = () => {
    // 业务分析：
    //    获取本地存储是否有城市信息
    //      1. 有，直接返回
    //      2. 没有，调用百度地图获取定位的城市，再返回
    const city = getLocalCity()
    // 如果本地存储有城市信息
    if (city.label) {
        // 直接返回城市信息 Promise 对象
        // return new Promise((reslove, reject) => {
        //   reslove(city)
        // })
        // 简便写法 - 更香
        return Promise.resolve(city)
    }
    // 没有城市信息
    else {
        // 调用后返回 Promise 对象，包含城市信息
        return new Promise((reslove, reject) => {
            // 调用百度地图的浏览器定位功能
            const geolocation = new BMap.Geolocation()
            geolocation.getCurrentPosition(async (res) => {
                // 根据定位城市，获取城市信息
                const cityInfo = await getAreaInfo(res.address.city)
                // 获取成功后，返回定位城市信息给调用者
                reslove(cityInfo.data.body)
                // 同时需要保存到本地存储
                setLocalCity(cityInfo.data.body)
            })
        })
    }
}